Quick fix to keep the trunk running while I continue the USB rework.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Tue, 31 Jan 2006 03:15:19 +0000 (03:15 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Tue, 31 Jan 2006 03:15:19 +0000 (03:15 +0000)
gpsbabel/jeeps/gpsapp.c
gpsbabel/jeeps/gpsusbread.c

index a2f0d3bca50035d636417e9687f464a3942c82d8..a77cd12ec38540724df0282b0278b9aed695823f 100644 (file)
@@ -679,11 +679,16 @@ int32 GPS_A100_Get(const char *port, GPS_PWay **way, int (*cb)(int, GPS_PWay *))
     {
        if(!((*way)[i]=GPS_Way_New()))
            return MEMORY_ERROR;
-       
+again: 
        if(!GPS_Packet_Read(fd, &rec))
            return gps_errno;
        if(!GPS_Send_Ack(fd, &tra, &rec))
            return gps_errno;
+/* Temp: just retry on read error. */
+       if (rec->n == 0) {
+               goto again;
+       }
+
        switch(gps_waypt_type)
        {
        case pD100:
index cff319a232173645a0f689f8c5776845fcc693c1..14a12ccfc8325b02802dafc0ef9b59da1c99c552 100644 (file)
@@ -35,6 +35,13 @@ int32 GPS_Packet_Read_usb(int32 fd, GPS_PPacket *packet)
        memset(&pkt, 0, sizeof(pkt));
        n = gusb_cmd_get(&pkt, sizeof(pkt));
 
+       if ( n <= 0 ) {
+// FIXME: revisit why we're intermittend getting read errors here...
+// fprintf(stderr, "Eeek %d\n", n);
+               (*packet)->n = (UC) 0;
+               return n;
+       }
+
        if (1 && gps_show_bytes) {
                GPS_Diag("\nRx Data:[%d]",n);
                for (i = 0; i < n; i++)